import logging
from logging.handlers import RotatingFileHandler
import time
import os
# 获取当前脚本的绝对路径

def logger_config(log_path,logging_name):
    '''
    配置log
    :param log_path: 输出log路径
    :param logging_name: 记录中name，可随意
    :return:
    '''
    '''
    logger是日志对象，handler是流处理器，console是控制台输出（没有console也可以，将不会在控制台输出，会在日志文件中输出）
    '''
    # 获取logger对象,取名
    logger = logging.getLogger(logging_name)
    # 输出DEBUG及以上级别的信息，针对所有输出的第一层过滤
    logger.setLevel(level=logging.DEBUG)
    
    script_dir = os.path.dirname(os.path.abspath(__file__))
    logs_path = os.path.join(script_dir, 'Log')

    # 检查文件夹是否存在，如果不存在则创建
    if not os.path.exists(logs_path):
        os.makedirs(logs_path)
        print(f"Folder '{logs_path}' created.")
    else:
        print(f"Folder '{logs_path}' already exists.")


    # 获取文件日志句柄并设置日志级别，第二层过滤
    # handler = logging.FileHandler(logs_path+f'//{log_path}', encoding='UTF-8')
    # handler.setLevel(logging.INFO)

    handler = RotatingFileHandler(
        logs_path+f'//{log_path}', maxBytes=10*1024*1024, backupCount=5 , encoding='UTF-8'  # 10MB，最多保留5个备份
    )
    handler.setLevel(logging.INFO)

    # 生成并设置文件日志格式
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    handler.setFormatter(formatter)

    # console相当于控制台输出，handler文件输出。获取流句柄并设置日志级别，第二层过滤
    console = logging.StreamHandler()
    console.setLevel(logging.DEBUG)
    # 为logger对象添加句柄
    logger.addHandler(handler)
    logger.addHandler(console)
    return logger
 
if __name__ == "__main__":
    logger = logger_config(log_path='run_log.log', logging_name='运行日志')
    logger.debug("debug")
    logger.info("info")
    logger.warning("warning")
    logger.error("error")
    logger.critical('critical')
    print('print和logger输出是有差别的！')